//引入对象
const Koa = require('koa');
const Router=require('koa-router');
const koaBoby=require('koa-body');

//
const koaCors=require("koa-cors");
const tagRouter=require("./routers/tag.routers");
const user=require("./routers/user.router");
const content=require("./routers/content.router");
const jwtRouter=require("./routers/jwttest.router");
// const {fail}=require("./toast")
// const jwt=require("jsonwebtoken");
// const key="web";



//引入内部方法或属性
// const{方法或属性名}=require('koa');

//创建对象
const app = new Koa();

app.use(koaCors());//启用跨域
app.use(koaBoby({
    strict:false//关闭严格模式
}));

// app.use(async (ctx,next)=>{
//     const exp=[
//         "/login",
//         "/",
//         "register"
//     ];//不需要验证的地址
//     if(exp.includes(ctx.url)){
//         await next();
//         return;
//     }

//     console.log(ctx.headers);
//     const authorization=(ctx.headers.authorization);
//     if (!authorization) {
//         return fail(ctx,"请添加 token 信息");
//     }
//     const token=authorization.split(" ")[1];
//     try{
//         const user =jwt.verify(token,key);
//         if (user.name==="admin") {
//             await next();
//         }else{
//             return fail(ctx,"权限不足")
//         }
//     }catch(error){
//         return fail(ctx,error);
//     }
// })

const router = new Router();//创建路由，支持传递参数
tagRouter(router);
user(router);
content(router);
jwtRouter(router);
// response
// app.use(async (ctx,next)=> {
//   ctx.body = 'Hello Koa';
//   next();
// });


// router.get("/",async ctx=>{
//     console.log(ctx.URL);
    
//     //url参数 ctx.query
//     console.log(ctx.query);
//     // console.log(ctx.querystring);

// })

// //postman
// router.post("/a",async ctx=>{
//   console.log(ctx.url);
//   console.log(ctx.request.body);
//   ctx.body="请求成功"
// });

// 调用router.routes()来组装匹配好的路由，返回一个合并好的中间件
// 调用router.allowedMethods()获得一个中间件，当发送了不符合的请求时，会返回 `405 Method Not Allowed` 或 `501 Not Implemented`
app.use(router.routes()).use(router.allowedMethods());
// app.use(router.routes());
// app.use(router.allowedMethods({ 
//     // throw: true, // 抛出错误，代替设置响应头状态
//     // notImplemented: () => '不支持当前请求所需要的功能',
//     // methodNotAllowed: () => '不支持的请求方式'
// }));


//地址  localhost:3000
app.listen(3000,()=>{
    console.log("http://localhost:3000")
});